// JavaScript Document
/*
*@description : 文件操作类
*@date : 2013-10-30
*@version : 2.0
*@author : WangTao
	context.drawImage方法详细：
	drawImage(
		img	规定要使用的图像、画布或视频,
		sx	可选。开始剪切的 x 坐标位置,
		sy	可选。开始剪切的 y 坐标位置,
		swidth	可选。被剪切图像的宽度,
		sheight	可选。被剪切图像的高度,
		x	在画布上放置图像的 x 坐标位置,
		y	在画布上放置图像的 y 坐标位置,
		width	可选。要使用的图像的宽度。（伸展或缩小图像）,
		height	可选。要使用的图像的高度。（伸展或缩小图像）
	);
*/


$(function(){
	
		//打开图片文件 start 
	$('#openBtn').bind('click', function(img) {
			$("#fileChoser").click();
	});
	$('#fileChoser').bind('change', function(evt) { 
			var canvasWidth = canvas.width;
			var canvasHeight = canvas.height;
			var files = evt.target.files;
			var file = files[0];
			// 判断文件类型，只处理图片文件
			//alert(file.type);
			if (!file.type.match('image.*')) {
					alert('不支持'+file.type+'类型');
					return;
			}else{//先清空画布，以免叠加
				ctx.clearRect(0,0,canvasWidth,canvasHeight);
			}
			var reader = new FileReader();
			// Closure to capture the file information.
			reader.onload = (function(theFile) {
				return function(e) {
					var image = new Image();
					image.src = e.target.result;
					image.onload = function(){
						var imageWidth = image.width;//图片宽度
						var imageHeight = image.height;//图片高度
						/*要画的size，如果图片大于画布size，用画布size
						var drawWidth = imageWidth > canvasWidth ? canvasWidth:imageWidth;
						var drawHeight = imageHeight > canvasHeight ? canvasHeight : imageHeight;
						*/
						setCanvasSize(imageWidth,imageHeight);
						ctx.drawImage(image , 0 ,0 ,imageWidth  , imageHeight);
						//clearContext();
						Cache.saveImageToCache();
					}
					var x = e.clientX   - canvasLeft;
					var y = e.clientY  - canvasTop;	
					ctx.beginPath();
					ctx.moveTo(x ,y );
					ctx.lineTo(x ,y);
					ctx.stroke();	
					};
				})(file);
			// Read in the image file as a data URL.
			reader.readAsDataURL(file);
	});
	
	//处理拖拽文件到画布内事件,一定要添加到缓冲画布上，不解释……
	canvas-buff.addEventListener('drop', function(e){
        e.preventDefault();
        var file = e.dataTransfer.files[0];//获得文件,如果是jQuery绑定事件，用原始事件获得
		if (!file.type.match('image.*')) {
			alert('不支持'+file.type+'类型');
			return;
		}
        var reader = new FileReader();
        reader.onload = function(e){
            var img = new Image();
            img.onload = function(evt){
                ctx.clearRect(0, 0, canvas.width, canvas.height);
				setCanvasSize(img.width,img.height);
            	ctx.drawImage(this, 0, 0, canvas.width, canvas.height);
            }
            img.src = e.target.result;
        }
        reader.onerror = function(e){
            var code = e.target.error.code;
			//如果是2的话，这个跟浏览器同源策略有关系，可以用跨域方法做
            if(code === 2){
                alert('please don\'t open this page using protocol file:///');
            }else{
                alert('error code: ' + code);
            }
        }
        reader.readAsDataURL(file);
    }, false);
	//覆盖浏览器原始事件
    canvas-buff.addEventListener('dragover', function(e){
        e.preventDefault();
    }, false);
    canvas-buff.addEventListener('dragenter', function(e){
        e.preventDefault();
    }, false);

	/**
	 *设置画布尺寸
	*/
	function setCanvasSize(w,h){
		canvas.width = w;
		canvas.height = h;
		canvas_buff.width = w;
		canvas_buff.height = h;
		canvasWidth = w;
		canvasHeight = h;
	}

});